Интерфейс CGI (Common Gateway Interface) представляет собой набор спецификаций для обмена данными между средством просмотра, сервером Web и приложением CGI. Средство просмотра Web клиента может запускать приложение CGI с помощью заполнения формы HTML или щелчком ссылки на странице HTML. Подобно фильтру ISAPI приложение CGI может принимать данные от клиента, выполнять предписанные действия и возвращать результаты обработки на страницу HTML или отправлять в базу данных. Поскольку приложения CGI часто реализуются на языке сценария, например Perl, они называются сценариями CGI.
Службы узла Web могут использовать большинство 32-разрядных приложений, работающих в Windows NT и удовлетворяющих спецификациям CGI.
На следующем рисунке показано как средство просмотра, сервер и приложение CGI обмениваются данными в соответствии со спецификациями CGI. Остальная часть настоящего раздела раскрывает содержание пяти этапов, показанных на рисунке.

Клиент посылает запрос
Средство просмотра клиента может отправить на сервер запрос CGI любым из следующих двух методов:
GET Данные добавляются в адрес URL и передаются на сервер.
POST Данные отправляются на сервер в поле сообщения HTTP (таким образом преодолеваются ограничения метода GET).
Клиент инициирует процесс CGI щелчком на странице HTML:
гиперссылки, запускающей сценарий непосредственно;
кнопки Submit или Отправить в форме HTML;
объекта, найденного с помощью метода GET;
объекта поиска (т.е. объекта, использующего ссылку ISINDEX ).
Сервер получает запрос
Адрес URL, который средство просмотра клиента посылает серверу, содержит имя исполняемого сценария CGI или приложения. Сервер проверяет записи системного реестра в разделе Script Mapping для поиска отображения расширения имени файла (т.е. программы, запускаемой для выполнения этого файла). В разделе Script Mapping системного реестра сервера содержатся отображения для файлов с расширениями CMD и BAT, которые обрабатываются Cmd.exe, и для файлов IDC, запускающих Internet Database Connector. Чтобы запустить приложение CGI без отображения расширения, добавьте соответствующую запись для этого приложения в раздел реестра. Например, чтобы запустить сценарий Perl, добавьте следующую запись:
.pl: REG_SZ: C:\RESKIT\PERL\BIN\PERL.EXE %s %s
Здесь
\Reskit\Perl\Bin\ — каталог, содержащий исполняемую программу; Perl.exe — исполняемая программа; первый аргумент %s — преобразованный путь сценария PERL (адрес URL преобразован в локальный путь); второй аргумент %s — данные из адреса URL (строка запроса), которые передаются в командную строку, если строка запроса не содержит знак равенства (=).
Сервер передает запрос приложению
Сервер передает данные приложению CGI посредством переменных среды, затем запускает приложение. Некоторые из этих переменных связаны с сервером; большинство приходит из средства просмотра клиента и имеет отношение либо непосредственно к средству просмотра клиента, либо к посланному запросу. См. таблицу в конце этой главы с неполным списком переменных среды.
Приложение CGI возвращает данные серверу
Приложение выполняет обработку данных. Если возможно, приложение выводит данные в стандартный выходной поток (STDOUT ). Возвращаемые данные должны иметь следующий формат:
Первая строка или строки директив сервера должны содержать тип MIME, директиву Location (указывающую или возвращающую клиенту другой документ) и директиву Status.
После директив сервера должна следовать пустая строка.
За пустой строкой должны следовать данные приложения.
Сервер возвращает данные клиенту
Сервер принимает данные из потока STDOUT и добавляет к ним стандартный заголовок HTTP . Затем сервер передает сообщение HTTP обратно клиенту.
Дополнительные сведения о CGI, см. в спецификациях CGI по адресу
http://hoohoo.ncsa.uiuc.edu/cgi/